Schulz werd op zijn zevende opgenomen in de jeugdopleiding van Hertha BSC. In 2010 speelde hij in de finale van de DFB-Pokal bij de jeugd, maar verloor die van 1899 Hoffenheim. In de zomer mocht hij mee op trainingskamp met het eerste elftal. Hij debuteerde in de hoofdmacht Hertha BSC op 14 augustus 2010 in de eerste ronde van de DFB-Pokal tegen SC Pfullendorf. Hij viel negen minuten voor tijd in voor Valeri Domovtsjijski. In zijn eerste twee seizoenen zat hij meestal op de bank en mocht hij af en toe in de basiself starten. Op 30 maart 2013 scoorde hij zijn eerste doelpunt voor Hertha BSC, tegen VfL Bochum.
Schulz speelde tot en met augustus 2015 meer dan negentig competitiewedstrijden voor Hertha BSC, waarmee hij in zowel 2010/11 als 2012/13 kampioen werd in de 2. Bundesliga. Hij tekende in augustus 2015 een contract tot medio 2019 bij Borussia Mönchengladbach, de nummer drie van de Bundesliga in het voorgaande seizoen.[1] Dat betaalde circa €3.500.000,- voor hem aan Hertha.[2] Schulz had er één competitiewedstrijd opzitten bij Mönchengladbach, toen hij in oktober 2015 een kruisband scheurde.[3] Het kostte hem bijna een jaar om hiervan te herstellen. Gedurende het seizoen 2016/17 lukte het hem zowel onder coach André Schubert als onder diens opvolger Dieter Hecking niet om een vaste basisspeler te worden.
Borussia Mönchengladbach verkocht Schulz in juli 2017 aan 1899 Hoffenheim. Hier bloeide hij onder Julian Nagelsmann op. Hij speelde 29 wedstrijden voor het Hoffenheim dat in het seizoen 2017/18 derde werd in de Bundesliga, de hoogste eindnotering in de clubhistorie. Een jaar later kwam hij tot dertig wedstrijden in de competitie. Schulz verruilde Hoffenheim in juli 2019 voor Borussia Dortmund, de nummer twee van Duitsland in het voorgaande seizoen. Dat betaalde circa €27.000.000,- voor hem.[4]
Schulz speelde in alle Duitse nationale jeugdelftallen vanaf Duitsland –16. Hij debuteerde op 13 augustus 2013 in Duitsland –21, in een vriendschappelijke interland tegen Frankrijk –21. Hij begon in de basiself en werd net als zes andere spelers in de rust gewisseld. Schulz nam twee jaar later met dit team deel aan het EK –21 van 2015.
Schulz debuteerde op 9 september 2018 in het Duits voetbalelftal, in een met 2–1 gewonnen oefeninterland tegen Peru. Bondscoach Joachim Löw gaf hem die dag een basisplaats als linksback. Schulz schoot in de 85e minuut zelf het winnende doelpunt binnen.